/*
 * @Author: ChaiHongJun
 * @Date: 2021-07-08 10:47:01
 * @LastEditors: ChaiHongJun
 * @LastEditTime: 2021-07-15 10:14:31
 * @version:
 * @Description: axios 封装
 */
import axios from "axios";
// import qs from "qs";
// import router from "@/router/index.js"; //路由文件
import { Toast } from "vant";
import store from "@/store";
let api_base_url = "";
if (process.env.NODE_ENV === "development") {
  api_base_url = "/api";
} else if (process.env.NODE_ENV === "production") {
  api_base_url = "/api";
}
let instance = axios.create({
  timeout: 1000 * 60,
  baseURL: api_base_url,
});
instance.defaults.responseType = "json";
instance.defaults.withCredentials = true;
// instance.defaults.transformRequest = [
//   (data) => {
//     return qs.stringify(data);
//   },
// ];
instance.defaults.validateStatus = function () {
  // return status >= 200 && status < 400; // 200- 399  resolve  其他状态码 reject
  // 如果在响应拦截设置了状态码判断，这里设置返回 true
  return true;
};
// 请求拦截器
instance.interceptors.request.use(
  (config) => {
    //{url: "/slides", method: "get", headers: {…}, baseURL: "http://api.hzwlb.org", transformRequest: Array(1), responseType: "json",…}
    config.headers["Content-Type"] = "application/json";

    config.headers["Authorization"] = `Bearer ${store.state.user.token}`;

    return config;
  },
  (error) => {
    Toast.fail("请求超时");
    return Promise.reject(error);
  }
);
// 响应拦截器即异常处理
// 服务器 Response 对象
instance.interceptors.response.use(
  (response) => {
    // {data: {…}, status: 200, statusText: "OK", headers: {…}, config: {…}, request:{…}}
    // let data = response.data; //响应的数据部分
    // let status = response.status; //标准状态码
    return Promise.resolve(response)
    // if (status >= 200 && status < 300) {
    //   console.log("data", data);
    //   //如果响应正常则放行 数据
    //   return Promise.resolve(data); //  *响应拦截器，只取数据部分*
    // }
    // else if (status === 204) {
    //   Toast.success("空的啊!");
    //   return Promise.resolve(data);
    // } else if (status === 301) {
    //   Toast.fail("请先登录!");
    //   router.replace({
    //     path: "/login",
    //     name: "Login",
    //   });
    //   return;
    // } else if (status === 400) {
    //   Toast.fail("客户端请求错误!");
    //   return;
    // } else if (status === 401) {
    //   Toast.fail("请配置验证信息!");
    //   return;
    // } else if (status === 403) {
    //   Toast.fail("服务器禁止访问资源！");
    //   return;
    // } else if (status === 404) {
    //   Toast.fail("资源未找到！");
    //   return;
    // } else if (status === 500) {
    //   Toast.fail("服务器出错了!");
    //   return;
    // } else if (status === 503) {
    //   Toast.fail("服务器正在维护中!");
    //   return;
    // } 
    // else {
    //   //其他错误
    //   Toast.fail(response.statusText);
    //   return Promise.reject(response);
    // }
  },
  (error) => {
    console.log("响应错误信息：");
    console.log(error);
  }
);
let api = {};
api.get = function (url, config) {
  return new Promise((resolve, reject) => {
    instance
      .get(url, config ? config : {})
      .then((response) => {
        resolve(response);
      })
      .catch((error) => {
        reject(error);
      });
  });
};
/**
 * @name: post 方式提交
 * @param {*} url 接口地址
 * @param {Object} data
 * @return {response}
 */
api.post = function (url, data) {
  return new Promise((resolve, reject) => {
    instance
      .post(url, data)
      .then((response) => {
        resolve(response);
      })
      .catch((error) => {
        reject(error);
      });
  });
};
export default api;
